import requests, re, openpyxl

# 定义一个爬虫函数
from openpyxl import Workbook


def get_html() -> str:
    url = "http://www.weather.com.cn/weather1d/101010100.shtml"
    resp = requests.get(url)
    resp.encoding = "utf-8"
    return resp.text  # 得到html页面，文本形式


def parse_html(html_str) -> list:
    # ['景区', '三亚', '九寨沟', '大理', '张家界', '桂林', '青岛']
    # ['天气', '多云', '多云', '小雨转多云', '多云', '中雨转暴雨', '多云']
    # ['气温', '35/26℃', '28/16℃', '29/17℃', '35/24℃', '28/24℃', '24/19℃']
    # ['旅游指数', '一般', '适宜', '适宜', '一般', '一般', '适宜']
    city_list = re.findall('<span class="name">([\u4e00-\u9fa5]+)</span>', html_str)
    weather_list = re.findall('<span class="weather">([\u4e00-\u9fa5]+)</span>', html_str)
    wd_list = re.findall('<span class="wd">(.+)</span>', html_str)
    zs_list = re.findall('<span class="zs">([\u4e00-\u9fa5]+)</span>', html_str)
    # 数据打包
    zip_list = []
    for a, b, c, d in zip(city_list, weather_list, wd_list, zs_list):
        # zip_list.append({a:[b,c,d]})
        zip_list.append([a, b, c, d])
    return zip_list


# 将爬取得到的list数据封装到 excel当中
lst = parse_html(get_html())

"""
# 创建一个新的 excel 工作簿
workBook: Workbook = openpyxl.Workbook()
# 在 excel 当中新建工作表
sheet = workBook.create_sheet("景区天气")
for i in lst:
    sheet.append(i)
workBook.save("景区天气.xlsx")
"""

# 从 excel 当中读取数据
# 打开工作簿
workBook: Workbook = openpyxl.load_workbook("景区天气.xlsx")
# 选择工作表
sheet = workBook['景区天气']
# 表格是二维列表，先读取行，再读取列
lst = []  # 存储行数据
for row in sheet.rows:
    sublst = []  # 存储列数据（单元格）
    for cell in row:  # 存储单元格
        sublst.append(cell.value)
        print(cell.value)
    print(sublst)
    lst.append(sublst)
print(lst)